/**
 * created by dt at 2025/5/6
 */

import { Buff } from '../../skill/core/buff/Buff';
import { Component } from '../../core/Component';
import { ecs_component } from '../../core/Component';
import { Entity } from '../../core/Entity';
import { World } from '../../core/World';
import { ECAttribute } from './ECAttribute';

// // 免疫信息
// export interface ImmunityInfo {
//     tag: number;          // 免疫的标签
//     priority: number;     // 免疫优先级
//     duration: number;     // 持续时间，-1表示永久
//     remainingTime: number;// 剩余时间
// }

// // Buff效果接口
// export interface IBuffEffect {
//     onAdd(buff: Buff): void;
//     onRemove(buff: Buff): void;
//     onTick(buff: Buff, deltaTime: number): void;
//     onTrigger(buff: Buff, triggerType: number): void;
// }

// // 免疫组件
// @ecs_component("Immunity")
// export class Immunity extends Component {
//     private immunities: Map<number, ImmunityInfo> = new Map();
    
//     // 添加免疫
//     public addImmunity(tag: number, priority: number, duration: number): void {
//         this.immunities.set(tag, {
//             tag,
//             priority,
//             duration,
//             remainingTime: duration
//         });
//     }

//     // 检查免疫
//     public isImmuneToTags(tags: number): boolean {
//         if (this.immunities.has(BuffTag.ImmuneAll)) {
//             return true;
//         }
//         for (const [immuneTag, _] of this.immunities) {
//             if ((tags & immuneTag) !== 0) {
//                 return true;
//             }
//         }
//         return false;
//     }

//     // 获取免疫优先级
//     public getImmunityPriority(tag: number): number {
//         return this.immunities.get(tag)?.priority ?? 0;
//     }

//     // 更新免疫时间
//     public updateImmunities(deltaTime: number): void {
//         for (const [tag, info] of this.immunities) {
//             if (info.duration > 0) {
//                 info.remainingTime -= deltaTime;
//                 if (info.remainingTime <= 0) {
//                     this.immunities.delete(tag);
//                 }
//             }
//         }
//     }

//     onRecycle(): void {
//         this.immunities.clear();
//     }

//     onReuse(): void {
//         this.immunities.clear();
//     }
// }

// Buff管理组件
@ecs_component("ECBuffManager")
export class ECBuffManager extends Component {
    buffs: Map<number, Buff> = new Map();
} 